package pacoteDao;

import java.sql.*;
import java.util.*;
import projetofinal.ConnectionFactory;
import projetofinal.Funcionario;

public class FuncionarioDAO {

    private ConnectionFactory conexao = new ConnectionFactory();
    private Connection connection;
    String query;

    public FuncionarioDAO() throws SQLException {
        if (connection == null || connection.isClosed()) {
            this.connection = conexao.getConnection();
        }
    }

    public boolean insert(Funcionario funcionario) throws SQLException {

        query = "insert into Funcionario(idfuncionario,nome,cpf,rg,matricula,salario,ddd,telefone) values (" + funcionario.getIdfuncionario() + ",'" + funcionario.getNome() + "','" + funcionario.getCpf() + "','" + funcionario.getRg() + "','" + funcionario.getMatricula() + "'," + funcionario.getSalario() + ",'" + funcionario.getDdd() + "','" + funcionario.getTelefone() + "')";
        Integer linha = conexao.executarNoQuery(query);

        conexao.close();
        return linha > 0;

    }

    public boolean update(Funcionario funcionario) throws SQLException {

        query = "update Funcionario set nome = '" + funcionario.getNome() + "', cpf = '" + funcionario.getCpf() + "', rg = '" + funcionario.getRg() + "', matricula = '" + funcionario.getMatricula() + "', salario = " + funcionario.getSalario() + ", ddd = '" + funcionario.getDdd() + "', telefone = '" + funcionario.getTelefone() + "' where id = " + funcionario.getIdfuncionario();
        Integer linha = conexao.executarNoQuery(query);

        conexao.close();
        return linha > 0;

    }

    public boolean delete(Funcionario funcionario) throws SQLException {

        query = "delete from Funcionario where idfuncionario = " + funcionario.getIdfuncionario();
        int linhas = conexao.executarNoQuery(query);

        conexao.close();
        return linhas > 0;

    }

    public List<Funcionario> consultar() throws SQLException {

        query = "select * from Funcionario ";
        ResultSet rset = conexao.executar(query);

        List<Funcionario> funcionarios = null;
        while (rset.next()) {
            funcionarios = new ArrayList<Funcionario>();
            Funcionario funcionario = new Funcionario();
            funcionario.setIdfuncionario(rset.getInt(1));
            funcionario.setNome(rset.getString(2));
            funcionario.setCpf(rset.getString(3));
            funcionario.setRg(rset.getString(4));
            funcionario.setMatricula(rset.getString(5));
            funcionario.setSalario(rset.getInt(6));
            funcionario.setDdd(rset.getString(7));
            funcionario.setTelefone(rset.getString(8));
            funcionarios.add(funcionario);
        }

        conexao.close();
        return funcionarios;

    }

    public Funcionario getById(Integer id) throws SQLException {

        query = "select * from Funcionario where idfuncionario = " + id;
        ResultSet rs = conexao.executar(query);

        Funcionario funcionario = null;
        if (rs.next()) {
            funcionario = new Funcionario();
            funcionario.setIdfuncionario(rs.getInt(1));
            funcionario.setNome(rs.getString(2));
            funcionario.setCpf(rs.getString(3));
            funcionario.setRg(rs.getString(4));
            funcionario.setMatricula(rs.getString(5));
            funcionario.setSalario(rs.getInt(6));
            funcionario.setDdd(rs.getString(7));
            funcionario.setTelefone(rs.getString(8));
        }

        conexao.close();
        return funcionario;

    }
}
